package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/most-frequent-number-following-key-in-an-array/'>数组中紧跟 key 之后出现最频繁的数字(Most Frequent Number Following Key In an Array)</a>
 * <p>给你一个下标从 0 开始的整数数组 nums ，同时给你一个整数 key ，它在 nums 出现过。</p>
 * <p>
 * 统计 在 nums 数组中紧跟着 key 后面出现的不同整数 target 的出现次数。换言之，target 的出现次数为满足以下条件的 i 的数目：
 *     <ul>
 *         <li>0 <= i <= n - 2</li>
 *         <li>nums[i] == key 且</li>
 *         <li>nums[i + 1] == target 。</li>
 *     </ul>
 *     请你返回出现 最多 次数的 target 。测试数据保证出现次数最多的 target 是唯一的。
 * </p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 * 示例 1：
 *      输入：nums = [1,100,200,1,100], key = 1
 *      输出：100
 *      解释：对于 target = 100 ，在下标 1 和 4 处出现过 2 次，且都紧跟着 key 。
 *          没有其他整数在 key 后面紧跟着出现，所以我们返回 100 。
 *
 * 示例 2：
 *      输入：nums = [2,2,2,2,3], key = 2
 *      输出：2
 *      解释：对于 target = 2 ，在下标 1 ，2 和 3 处出现过 3 次，且都紧跟着 key 。
 *          对于 target = 3 ，在下标 4 出出现过 1 次，且紧跟着 key 。
 *          target = 2 是紧跟着 key 之后出现次数最多的数字，所以我们返回 2 。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>2 <= nums.length <= 1000</li>
 *     <li>1 <= nums[i] <= 1000</li>
 *     <li>测试数据保证答案是唯一的。</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/19 13:22
 */
public class LC2190MostFrequentNumberFollowingKeyInArray_S {
    static class Solution {
        public int mostFrequent(int[] nums, int key) {
            int[] cnt = new int[1001];
            for (int i = 0; i < nums.length - 1; i++) {
                if (nums[i] == key) {
                    ++cnt[nums[i + 1]];
                }
            }
            int res = 0;
            for (int i = 0; i < cnt.length; i++) {
                if (cnt[i] > cnt[res]) {
                    res = i;
                }
            }
            return res;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.mostFrequent(new int[]{1, 100, 200, 1, 100}, 1));
        System.out.println(solution.mostFrequent(new int[]{2, 2, 2, 2, 3}, 2));
    }
}
